package com.ruoyi.energy.service;

import java.util.List;
import com.ruoyi.energy.domain.EmsDevice;

/**
 * 设备管理Service接口
 * 
 * @author ruoyi
 * @date 2024-01-20
 */
public interface IEmsDeviceService {
    
    /**
     * 查询设备
     * 
     * @param deviceId 设备主键
     * @return 设备
     */
    public EmsDevice selectEmsDeviceByDeviceId(Long deviceId);

    /**
     * 查询设备列表
     * 
     * @param emsDevice 设备
     * @return 设备集合
     */
    public List<EmsDevice> selectEmsDeviceList(EmsDevice emsDevice);

    /**
     * 新增设备
     * 
     * @param emsDevice 设备
     * @return 结果
     */
    public int insertEmsDevice(EmsDevice emsDevice);

    /**
     * 修改设备
     * 
     * @param emsDevice 设备
     * @return 结果
     */
    public int updateEmsDevice(EmsDevice emsDevice);

    /**
     * 批量删除设备
     * 
     * @param deviceIds 需要删除的设备主键集合
     * @return 结果
     */
    public int deleteEmsDeviceByDeviceIds(Long[] deviceIds);

    /**
     * 删除设备信息
     * 
     * @param deviceId 设备主键
     * @return 结果
     */
    public int deleteEmsDeviceByDeviceId(Long deviceId);

    /**
     * 校验设备编码是否唯一
     * 
     * @param device 设备信息
     * @return 结果
     */
    public boolean checkDeviceCodeUnique(EmsDevice device);

    /**
     * 根据部门ID查询设备列表
     * 
     * @param deptId 部门ID
     * @return 设备集合
     */
    public List<EmsDevice> selectEmsDeviceListByDeptId(Long deptId);

    /**
     * 导入设备数据
     * 
     * @param deviceList 设备数据列表
     * @param isUpdateSupport 是否更新支持，如果已存在，则进行更新数据
     * @param operName 操作用户
     * @return 结果
     */
    public String importDevice(List<EmsDevice> deviceList, Boolean isUpdateSupport, String operName);

    /**
     * 根据设备编码查询设备
     *
     * @param deviceCode 设备编码
     * @return 设备
     */
    public EmsDevice selectEmsDeviceByDeviceCode(String deviceCode);

    /**
     * 生成设备MQTT提交格式
     *
     * @param device 设备信息
     * @return MQTT格式数据
     */
    public java.util.Map<String, Object> generateMqttFormat(EmsDevice device);
}